package org.atovio.upload.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @author AtoVio, Winter Yuan
 */
@Controller
public class UploadController {

    // 上传文件。如果报错可能是因为文件大小限制，需要在配置文件中设置
    @PostMapping("/uploadFile")
    public String uploadFile(@RequestParam("upload-file") MultipartFile multipartFile) {
        System.out.println("开始处理上传的文件");
        Map<String, Object> info = new HashMap<>();

        try {
            if (!multipartFile.isEmpty()) {
                info.put("文件的参数名称", multipartFile.getName());
                info.put("内容类型", multipartFile.getContentType());

                var ext = "Unknown";
                var filename = multipartFile.getOriginalFilename(); // 获取文件原始名称，如a.gif
                // 获取后缀
                if (filename.indexOf(".") > 0) {
                    ext = filename.substring(filename.indexOf(".") + 1);
                }
                // 生成服务器使用的文件名称
                var newFilename = UUID.randomUUID() + "." + ext;

                // 存储文件
                var path = "D:/Things/java/test/" + newFilename;
                multipartFile.transferTo(new File(path));

                info.put("文件名称", newFilename);
            }
        } catch (Exception e) {
            throw new RuntimeException();
        }

        // 重定向
        return "redirect:/index.html";
    }
}
